/* SPU服务器全部接口返回的数据类型 */
export interface ResponseData {
  code: number
  message: string
  ok: boolean
}

//SPU数据的ts类型:添加或修改
export interface SpuData {
  category3Id: string | number
  id?: number // SPU的ID
  spuName: string
  tmId: number | string // 品牌的ID
  description: string
  spuImageList: null | SpuImg[] // SPU图片墙数组 -- 修改时需要发请求获取
  spuSaleAttrList: null | SaleAttr[] // 销售属性数组 -- 修改时需要发请求获取
}
//数组:元素都是已有SPU数据的ts类型
export type Records = SpuData[]
//获取已有SPU列表的返回数据的ts类型
export interface HasSpuResponseData extends ResponseData {
  data: {
    records: Records
    total: number
    size: number
    current: number
    searchCount: boolean // 是否进行过条件查询
    pages: number // 总页数
  }
}

//一个品牌数据的TS类型
export interface Trademark {
  id: number
  tmName: string
  logoUrl: string
}
//所有品牌组成的数组数据的ts类型
export interface AllTradeMark extends ResponseData {
  data: Trademark[]
}

//SPU的商品图片对象的ts类型
export interface SpuImg {
  id?: number
  imgName?: string
  imgUrl?: string
  createTime?: string
  updateTime?: string
  spuId?: number
  // 以下两个字段是图片上传组件要求的字段
  name?: string
  url?: string
}
//已有SPU的照片墙数据的ts类型
export interface SpuHasImg extends ResponseData {
  data: SpuImg[]
}

//已有的销售属性值对象的ts类型 -- id后面的问号表示可选(新增|修改),其他字段的问号表示获取和收集等不同情况要求的数据不同
export interface SaleAttrValue {
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number
  baseSaleAttrId: number | string //销售属性值ID
  saleAttrValueName: string //销售属性值名称
  saleAttrName?: string
  isChecked?: null
}
//已有的销售属性值数组的ts类型
export type SpuSaleAttrValueList = SaleAttrValue[]

//销售属性对象的ts类型
export interface SaleAttr {
  id?: number
  createTime?: null
  updateTime?: null
  spuId?: number
  baseSaleAttrId: number | string //预定义销售属性ID(1,2,3)
  saleAttrName: string //预定义销售属性名称(颜色,版本,尺码)
  spuSaleAttrValueList: SpuSaleAttrValueList //销售属性值数组
  flag?: boolean // 在input和button之间切换
  saleAttrValue?: string // 收集用户input框输入的销售属性值
  saleIdAndValueId?: string // 销售属性ID和销售属性值ID组成的字符串
}
//SPU已有的销售属性接口返回数据的ts类型
export interface SaleAttrResponseData extends ResponseData {
  data: SaleAttr[]
}

//预定义销售属性的ts类型
export interface HasSaleAttr {
  id: number
  name: string
}
//全部预定义销售属性接口返回数据的ts类型
export interface HasSaleAttrResponseData extends ResponseData {
  data: HasSaleAttr[]
}

//平台属性的ts类型
export interface Attr {
  attrId: number | string //平台属性的ID
  valueId: number | string //属性值的ID
}
//销售属性的ts类型
export interface saleArr {
  saleAttrId: number | string //销售属性ID
  saleAttrValueId: number | string //属性值的ID
}
//新增sku需要收集的数据的ts类型
export interface SkuData {
  category3Id: string | number //三级分类的ID
  spuId: string | number //已有的SPU的ID
  tmId: string | number //SPU品牌的ID
  skuName: string //sku名字
  price: string | number //sku价格
  weight: string | number //sku重量
  skuDesc: string //sku的描述
  skuAttrValueList?: Attr[] //平台属性数组
  skuSaleAttrValueList?: saleArr[] //销售属性数组
  skuDefaultImg: string //sku图片地址
}

//获取某个SPU的全部SKU数据接口返回值的ts类型
export interface SkuInfoData extends ResponseData {
  data: SkuData[]
}
